package top.lshaci.learning.singleton;

import lombok.AccessLevel;
import lombok.NoArgsConstructor;

/**
 * UnsafeThreadIdler
 * <pre>
 *     线程不安全 - 懒汉式
 *     1) 起到了懒加载的效果，但是只能在单线程下使用
 *     2) 如果在多线程下，一个线程进入了if(singleton == null)判断语句，还未来得及往下执行，
 *        另一个线程也通过了这个判断语句，这时便会产生多个实例。所以在多线程环境下不可使用。
 * </pre>
 *
 * @author lshaci
 * @since 1.0.0
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class UnsafeThreadIdler {

    private static UnsafeThreadIdler singleton;

    public static UnsafeThreadIdler instance() {
        if (singleton == null) {
            singleton = new UnsafeThreadIdler();
        }
        return singleton;
    }
}
